<?php
namespace Home\Controller;

//use Think\Controller;
use Util\AccessController;

/*引用相应的配置*/
require_once(THINK_PATH . "Library/Util/ChatPay/lib/WxPay.Config.php");
require_once(THINK_PATH . "Library/Util/ChatPay/lib/WxPay.Api.php");
require_once(THINK_PATH . "Library/Util/ChatPay/lib/WxPay.Data.php");
use ChatPay\lib\WxPayConfig;

use ChatPay\lib\WxPayApi;
use Util\ChatPay\JsApiPay;
use ChatPay\lib\WxPayUnifiedOrder;

class WXpayController extends AccessController {

    /*
     * 微信支付入口
     */
    public function index() {
        //设置订单总金额，只能为整数，详见支付金额
        $money = 1;
        //用户在商户appid下的唯一标识
        $openid = 'omqfNwdGrcw9S1aBt4u-CyLWVPXo';
        //设置商品或支付单简要描述
        $info = '测试';
        //设置附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
        $data = 'O123456789';
        $this->Set($money, $openid, $info, $data);
    }

//    调用支付接口
    public function Set($money, $openid, $info, $data) {
        $input = new WxPayUnifiedOrder();
        $input->SetBody($info);//设置商品或支付单简要描述
        $input->SetAttach($data);//设置附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
        $input->SetOut_trade_no(WxPayConfig::MCHID . date("YmdHis"));//设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
        $input->SetTotal_fee($money);//设置订单总金额，只能为整数，详见支付金额
        $input->SetTime_start(date("YmdHis"));//设置订单生成时间，格式为yyyyMMddHHmmss
        $input->SetTime_expire(date("YmdHis", time() + 600));//设置订单失效时间，格式为yyyyMMddHHmmss
        $input->SetGoods_tag($SID = 'G123456789');//设置商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优
        $input->SetOpenid($openid);//用户在商户appid下的唯一标识
        $input->SetNotify_url(C('URL_ROOT') . "Pay/NotifyCall/");//设置接收微信支付异步通知回调地址
        $input->SetTrade_type("JSAPI");//设置取值如下：JSAPI，NATIVE，APP，详细说明见参数规定
        $input->SetProduct_id($SID);//此id为二维码中包含的商品ID，商户自行定义。
        $order = WxPayApi::unifiedOrder($input);// 统一下单
        $tools = new JsApiPay();//JSAPI支付实现类
        $jsApiParameters = $tools->GetJsApiParameters($order);//获取jsapi支付的参数

        //页面详情
//        $this->OID = $OID;
        $this->MONEY = $money;
        $this->TEAMNAME = $info;
        $this->jsApiParameters = $jsApiParameters;
        $this->display('Pay/NativePay');
    }

    //回调入口
    public function NotifyCall() {
//        回调处理
        $call = new \Home\Util\PayNotify();
        $call->Handle(false);
    }


}